extends Node2D  # 继承自Node2D类，适用于2D游戏场景

# 声明一个变量，用来记录游戏是否处于暂停状态
var paused = false

# 预加载暂停菜单场景，这样我们可以在需要时快速创建它
# preload表示在游戏启动时就加载这个场景，而不是在需要时才加载
var pause_menu_scene = preload("res://pause_menu.tscn")

# 声明一个变量，用来存储当前显示的暂停菜单实例
# 初始值为null表示当前没有显示暂停菜单
var menu_instance = null

# 当有输入事件发生时调用此函数
func _input(event: InputEvent) -> void:
	# 检测是否按下了ESC键（ui_cancel是Godot预定义的动作，默认映射到ESC键）
	if event.is_action_pressed("ui_cancel"):
		# 如果暂停菜单已经存在（不为null）
		if menu_instance != null:
			# 取消游戏暂停状态
			get_tree().paused = false
			# 删除暂停菜单
			menu_instance.queue_free()  # queue_free()会在下一帧删除节点
			# 将菜单实例变量设为null，表示当前没有显示菜单
			menu_instance = null
		else:
			# 如果暂停菜单不存在，则暂停游戏
			get_tree().paused = true
			# 创建一个新的暂停菜单实例
			menu_instance = pause_menu_scene.instantiate()
			# 将暂停菜单添加为当前节点的子节点，使其显示在屏幕上
			add_child(menu_instance)
